/*
 * Copyright 2018 JDCLOUD.COM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http:#www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Video-on-Demand
 * 视频点播相关接口
 *
 * OpenAPI spec version: v1
 * Contact: 
 *
 * NOTE: This class is auto generated by the jdcloud code generator program.
 */


using JDCloudSDK.Core.Auth;
using JDCloudSDK.Core.Client;
using JDCloudSDK.Core.Http;
using JDCloudSDK.Vod.Apis;
using JDCloudSDK.Vod.Model;
using System;
using System.Collections.Generic;
using System.Text;
#if NET40||NET35
#else
using System.Threading.Tasks;
#endif

namespace JDCloudSDK.Vod.Client
{
    /// <summary>
    ///  Video-on-Demand
    ///  视频点播相关接口
    ///  Vod Api 客户端
    ///</summary>
    public class VodClient : JdcloudClient
    {

        /// <summary>
        ///  默认私有构造函数
        /// </summary>
        private VodClient()
        {

        }

        /// <summary>
        /// 默认构造函数
        /// </summary>
        /// <param name="credentialsProvider">认证信息</param>
        /// <param name="httpRequestConfig">http 客户端配置信息</param>
        /// <param name="environment">sdk 环境配置信息</param>
        public VodClient(CredentialsProvider credentialsProvider, HttpRequestConfig httpRequestConfig,SDKEnvironment environment)
        {
            this.httpRequestConfig = httpRequestConfig;
            this.credentialsProvider = credentialsProvider;
            this.environment = environment;
        }

        /// <summary>
        /// 默认构造函数
        /// </summary>
        /// <param name="httpRequestConfig">http 客户端配置信息</param>
        /// <param name="credentialsProvider">认证信息</param>
        public VodClient(CredentialsProvider credentialsProvider,HttpRequestConfig httpRequestConfig)
        {
            this.httpRequestConfig = httpRequestConfig;
            this.credentialsProvider = credentialsProvider;
        }

        /// <summary>
        /// 默认构造函数，
        /// 注意如果使用此方法 httpRequestConfig 使用的http 请求 schema 为Https
        /// </summary>
        /// <param name="credentialsProvider">认证信息</param>
        public VodClient(CredentialsProvider credentialsProvider)
        {
            this.credentialsProvider = credentialsProvider;
        }

        /// <summary>
        ///  版本号 1.2.3
        ///</summary>
        public const string ClientVersion = "1.2.3";

        private const string apiVersion = "v1";
        private const string userAgentPrefix = "JdcloudSdkDotNet";
        private const string defaultEndpoint = "vod.jdcloud-api.com";
        private const string serviceName = "vod";
        private const string userAgent = userAgentPrefix + "/" + ClientVersion + " " + serviceName + "/" + apiVersion;


        private SDKEnvironment environment = new SDKEnvironment(defaultEndpoint);
        private CredentialsProvider credentialsProvider;
        private HttpRequestConfig httpRequestConfig;

        /// <summary>
        ///  获取证书信息
        ///</summary>
        public override CredentialsProvider CredentialsProvider   { get { return credentialsProvider; } }

        /// <summary>
        ///  获取http 客户端配置信息
        ///</summary>
        public override HttpRequestConfig HttpRequestConfig { get { return httpRequestConfig; } }

        /// <summary>
        ///  获取sdk环境配置信息
        ///</summary>
        public override SDKEnvironment SDKEnvironment { get { return environment; } }

        /// <summary>
        ///  获取用户自定义浏览器识别字符串
        ///</summary>
        public override string UserAgent { get { return userAgent; } }

        /// <summary>
        ///  获取服务名称
        ///</summary>
        public override string ServiceName { get { return serviceName; } }

        /// <summary>
        ///  获取版本号
        ///</summary>
        public override string Version { get { return apiVersion; } }



#if NET40||NET35
        /// <summary>
        ///  批量提交质检作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public BatchSubmitQualityDetectionJobsResponse BatchSubmitQualityDetectionJobs(BatchSubmitQualityDetectionJobsRequest request) {
            return  new BatchSubmitQualityDetectionJobsExecutor().Client(this).Execute<BatchSubmitQualityDetectionJobsResponse, BatchSubmitQualityDetectionJobsResult, BatchSubmitQualityDetectionJobsRequest>(request);
        }
#else
        /// <summary>
        ///  批量提交质检作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<BatchSubmitQualityDetectionJobsResponse> BatchSubmitQualityDetectionJobs(BatchSubmitQualityDetectionJobsRequest request) {
            return await new BatchSubmitQualityDetectionJobsExecutor().Client(this).Execute<BatchSubmitQualityDetectionJobsResponse, BatchSubmitQualityDetectionJobsResult, BatchSubmitQualityDetectionJobsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除转码模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteTranscodeTemplateResponse DeleteTranscodeTemplate(DeleteTranscodeTemplateRequest request) {
            return  new DeleteTranscodeTemplateExecutor().Client(this).Execute<DeleteTranscodeTemplateResponse, DeleteTranscodeTemplateResult, DeleteTranscodeTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  删除转码模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteTranscodeTemplateResponse> DeleteTranscodeTemplate(DeleteTranscodeTemplateRequest request) {
            return await new DeleteTranscodeTemplateExecutor().Client(this).Execute<DeleteTranscodeTemplateResponse, DeleteTranscodeTemplateResult, DeleteTranscodeTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改水印
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateWatermarkResponse UpdateWatermark(UpdateWatermarkRequest request) {
            return  new UpdateWatermarkExecutor().Client(this).Execute<UpdateWatermarkResponse, UpdateWatermarkResult, UpdateWatermarkRequest>(request);
        }
#else
        /// <summary>
        ///  修改水印
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateWatermarkResponse> UpdateWatermark(UpdateWatermarkRequest request) {
            return await new UpdateWatermarkExecutor().Client(this).Execute<UpdateWatermarkResponse, UpdateWatermarkResult, UpdateWatermarkRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询域名列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListDomainsResponse ListDomains(ListDomainsRequest request) {
            return  new ListDomainsExecutor().Client(this).Execute<ListDomainsResponse, ListDomainsResult, ListDomainsRequest>(request);
        }
#else
        /// <summary>
        ///  查询域名列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListDomainsResponse> ListDomains(ListDomainsRequest request) {
            return await new ListDomainsExecutor().Client(this).Execute<ListDomainsResponse, ListDomainsResult, ListDomainsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取视频上传地址和凭证
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateVideoUploadTaskResponse CreateVideoUploadTask(CreateVideoUploadTaskRequest request) {
            return  new CreateVideoUploadTaskExecutor().Client(this).Execute<CreateVideoUploadTaskResponse, CreateVideoUploadTaskResult, CreateVideoUploadTaskRequest>(request);
        }
#else
        /// <summary>
        ///  获取视频上传地址和凭证
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateVideoUploadTaskResponse> CreateVideoUploadTask(CreateVideoUploadTaskRequest request) {
            return await new CreateVideoUploadTaskExecutor().Client(this).Execute<CreateVideoUploadTaskResponse, CreateVideoUploadTaskResult, CreateVideoUploadTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询CDN域名URL鉴权规则配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetURLRuleResponse GetURLRule(GetURLRuleRequest request) {
            return  new GetURLRuleExecutor().Client(this).Execute<GetURLRuleResponse, GetURLRuleResult, GetURLRuleRequest>(request);
        }
#else
        /// <summary>
        ///  查询CDN域名URL鉴权规则配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetURLRuleResponse> GetURLRule(GetURLRuleRequest request) {
            return await new GetURLRuleExecutor().Client(this).Execute<GetURLRuleResponse, GetURLRuleResult, GetURLRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询域名访问头参数列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListHeadersResponse ListHeaders(ListHeadersRequest request) {
            return  new ListHeadersExecutor().Client(this).Execute<ListHeadersResponse, ListHeadersResult, ListHeadersRequest>(request);
        }
#else
        /// <summary>
        ///  查询域名访问头参数列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListHeadersResponse> ListHeaders(ListHeadersRequest request) {
            return await new ListHeadersExecutor().Client(this).Execute<ListHeadersResponse, ListHeadersResult, ListHeadersRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  设置CDN域名URL鉴权规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SetURLRuleResponse SetURLRule(SetURLRuleRequest request) {
            return  new SetURLRuleExecutor().Client(this).Execute<SetURLRuleResponse, SetURLRuleResult, SetURLRuleRequest>(request);
        }
#else
        /// <summary>
        ///  设置CDN域名URL鉴权规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SetURLRuleResponse> SetURLRule(SetURLRuleRequest request) {
            return await new SetURLRuleExecutor().Client(this).Execute<SetURLRuleResponse, SetURLRuleResult, SetURLRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询分类及其子分类，若指定的分类ID为0，则返回一个根分类及其子分类（即一级分类）.
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetCategoryWithChildrenResponse GetCategoryWithChildren(GetCategoryWithChildrenRequest request) {
            return  new GetCategoryWithChildrenExecutor().Client(this).Execute<GetCategoryWithChildrenResponse, GetCategoryWithChildrenResult, GetCategoryWithChildrenRequest>(request);
        }
#else
        /// <summary>
        ///  查询分类及其子分类，若指定的分类ID为0，则返回一个根分类及其子分类（即一级分类）.
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetCategoryWithChildrenResponse> GetCategoryWithChildren(GetCategoryWithChildrenRequest request) {
            return await new GetCategoryWithChildrenExecutor().Client(this).Execute<GetCategoryWithChildrenResponse, GetCategoryWithChildrenResult, GetCategoryWithChildrenRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询转码作业摘要
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetTranscodeJobSummariesResponse GetTranscodeJobSummaries(GetTranscodeJobSummariesRequest request) {
            return  new GetTranscodeJobSummariesExecutor().Client(this).Execute<GetTranscodeJobSummariesResponse, GetTranscodeJobSummariesResult, GetTranscodeJobSummariesRequest>(request);
        }
#else
        /// <summary>
        ///  查询转码作业摘要
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetTranscodeJobSummariesResponse> GetTranscodeJobSummaries(GetTranscodeJobSummariesRequest request) {
            return await new GetTranscodeJobSummariesExecutor().Client(this).Execute<GetTranscodeJobSummariesResponse, GetTranscodeJobSummariesResult, GetTranscodeJobSummariesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询转码模板列表。
        /// 允许通过条件过滤查询，支持的过滤字段如下：
        ///   - source[eq] 按模板来源精确查询
        ///   - templateType[eq] 按模板类型精确查询
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListTranscodeTemplatesResponse ListTranscodeTemplates(ListTranscodeTemplatesRequest request) {
            return  new ListTranscodeTemplatesExecutor().Client(this).Execute<ListTranscodeTemplatesResponse, ListTranscodeTemplatesResult, ListTranscodeTemplatesRequest>(request);
        }
#else
        /// <summary>
        ///  查询转码模板列表。
        /// 允许通过条件过滤查询，支持的过滤字段如下：
        ///   - source[eq] 按模板来源精确查询
        ///   - templateType[eq] 按模板类型精确查询
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListTranscodeTemplatesResponse> ListTranscodeTemplates(ListTranscodeTemplatesRequest request) {
            return await new ListTranscodeTemplatesExecutor().Client(this).Execute<ListTranscodeTemplatesResponse, ListTranscodeTemplatesResult, ListTranscodeTemplatesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询视频转码摘要
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetTranscodeSummariesResponse GetTranscodeSummaries(GetTranscodeSummariesRequest request) {
            return  new GetTranscodeSummariesExecutor().Client(this).Execute<GetTranscodeSummariesResponse, GetTranscodeSummariesResult, GetTranscodeSummariesRequest>(request);
        }
#else
        /// <summary>
        ///  查询视频转码摘要
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetTranscodeSummariesResponse> GetTranscodeSummaries(GetTranscodeSummariesRequest request) {
            return await new GetTranscodeSummariesExecutor().Client(this).Execute<GetTranscodeSummariesResponse, GetTranscodeSummariesResult, GetTranscodeSummariesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询分类
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetCategoryResponse GetCategory(GetCategoryRequest request) {
            return  new GetCategoryExecutor().Client(this).Execute<GetCategoryResponse, GetCategoryResult, GetCategoryRequest>(request);
        }
#else
        /// <summary>
        ///  查询分类
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetCategoryResponse> GetCategory(GetCategoryRequest request) {
            return await new GetCategoryExecutor().Client(this).Execute<GetCategoryResponse, GetCategoryResult, GetCategoryRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateDomainResponse CreateDomain(CreateDomainRequest request) {
            return  new CreateDomainExecutor().Client(this).Execute<CreateDomainResponse, CreateDomainResult, CreateDomainRequest>(request);
        }
#else
        /// <summary>
        ///  添加域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateDomainResponse> CreateDomain(CreateDomainRequest request) {
            return await new CreateDomainExecutor().Client(this).Execute<CreateDomainResponse, CreateDomainResult, CreateDomainRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除水印
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteWatermarkResponse DeleteWatermark(DeleteWatermarkRequest request) {
            return  new DeleteWatermarkExecutor().Client(this).Execute<DeleteWatermarkResponse, DeleteWatermarkResult, DeleteWatermarkRequest>(request);
        }
#else
        /// <summary>
        ///  删除水印
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteWatermarkResponse> DeleteWatermark(DeleteWatermarkRequest request) {
            return await new DeleteWatermarkExecutor().Client(this).Execute<DeleteWatermarkResponse, DeleteWatermarkResult, DeleteWatermarkRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  提交转码作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SubmitTranscodeJobResponse SubmitTranscodeJob(SubmitTranscodeJobRequest request) {
            return  new SubmitTranscodeJobExecutor().Client(this).Execute<SubmitTranscodeJobResponse, SubmitTranscodeJobResult, SubmitTranscodeJobRequest>(request);
        }
#else
        /// <summary>
        ///  提交转码作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SubmitTranscodeJobResponse> SubmitTranscodeJob(SubmitTranscodeJobRequest request) {
            return await new SubmitTranscodeJobExecutor().Client(this).Execute<SubmitTranscodeJobResponse, SubmitTranscodeJobResult, SubmitTranscodeJobRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改转码模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateTranscodeTemplateResponse UpdateTranscodeTemplate(UpdateTranscodeTemplateRequest request) {
            return  new UpdateTranscodeTemplateExecutor().Client(this).Execute<UpdateTranscodeTemplateResponse, UpdateTranscodeTemplateResult, UpdateTranscodeTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  修改转码模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateTranscodeTemplateResponse> UpdateTranscodeTemplate(UpdateTranscodeTemplateRequest request) {
            return await new UpdateTranscodeTemplateExecutor().Client(this).Execute<UpdateTranscodeTemplateResponse, UpdateTranscodeTemplateResult, UpdateTranscodeTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询质测模板列表。
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListQualityDetectionTemplatesResponse ListQualityDetectionTemplates(ListQualityDetectionTemplatesRequest request) {
            return  new ListQualityDetectionTemplatesExecutor().Client(this).Execute<ListQualityDetectionTemplatesResponse, ListQualityDetectionTemplatesResult, ListQualityDetectionTemplatesRequest>(request);
        }
#else
        /// <summary>
        ///  查询质测模板列表。
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListQualityDetectionTemplatesResponse> ListQualityDetectionTemplates(ListQualityDetectionTemplatesRequest request) {
            return await new ListQualityDetectionTemplatesExecutor().Client(this).Execute<ListQualityDetectionTemplatesResponse, ListQualityDetectionTemplatesResult, ListQualityDetectionTemplatesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  批量修改视频信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public BatchUpdateVideosResponse BatchUpdateVideos(BatchUpdateVideosRequest request) {
            return  new BatchUpdateVideosExecutor().Client(this).Execute<BatchUpdateVideosResponse, BatchUpdateVideosResult, BatchUpdateVideosRequest>(request);
        }
#else
        /// <summary>
        ///  批量修改视频信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<BatchUpdateVideosResponse> BatchUpdateVideos(BatchUpdateVideosRequest request) {
            return await new BatchUpdateVideosExecutor().Client(this).Execute<BatchUpdateVideosResponse, BatchUpdateVideosResult, BatchUpdateVideosRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取图片上传地址和凭证
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateImageUploadTaskResponse CreateImageUploadTask(CreateImageUploadTaskRequest request) {
            return  new CreateImageUploadTaskExecutor().Client(this).Execute<CreateImageUploadTaskResponse, CreateImageUploadTaskResult, CreateImageUploadTaskRequest>(request);
        }
#else
        /// <summary>
        ///  获取图片上传地址和凭证
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateImageUploadTaskResponse> CreateImageUploadTask(CreateImageUploadTaskRequest request) {
            return await new CreateImageUploadTaskExecutor().Client(this).Execute<CreateImageUploadTaskResponse, CreateImageUploadTaskResult, CreateImageUploadTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改质检模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateQualityDetectionTemplateResponse UpdateQualityDetectionTemplate(UpdateQualityDetectionTemplateRequest request) {
            return  new UpdateQualityDetectionTemplateExecutor().Client(this).Execute<UpdateQualityDetectionTemplateResponse, UpdateQualityDetectionTemplateResult, UpdateQualityDetectionTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  修改质检模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateQualityDetectionTemplateResponse> UpdateQualityDetectionTemplate(UpdateQualityDetectionTemplateRequest request) {
            return await new UpdateQualityDetectionTemplateExecutor().Client(this).Execute<UpdateQualityDetectionTemplateResponse, UpdateQualityDetectionTemplateResult, UpdateQualityDetectionTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  提交视频剪辑作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SubmitVeditJobResponse SubmitVeditJob(SubmitVeditJobRequest request) {
            return  new SubmitVeditJobExecutor().Client(this).Execute<SubmitVeditJobResponse, SubmitVeditJobResult, SubmitVeditJobRequest>(request);
        }
#else
        /// <summary>
        ///  提交视频剪辑作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SubmitVeditJobResponse> SubmitVeditJob(SubmitVeditJobRequest request) {
            return await new SubmitVeditJobExecutor().Client(this).Execute<SubmitVeditJobResponse, SubmitVeditJobResult, SubmitVeditJobRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetDomainResponse GetDomain(GetDomainRequest request) {
            return  new GetDomainExecutor().Client(this).Execute<GetDomainResponse, GetDomainResult, GetDomainRequest>(request);
        }
#else
        /// <summary>
        ///  查询域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetDomainResponse> GetDomain(GetDomainRequest request) {
            return await new GetDomainExecutor().Client(this).Execute<GetDomainResponse, GetDomainResult, GetDomainRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询截图模板列表。
        /// 允许通过条件过滤查询，支持的过滤字段如下：
        ///   - templateType[eq] 按模板类型精确查询
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListSnapshotTemplatesResponse ListSnapshotTemplates(ListSnapshotTemplatesRequest request) {
            return  new ListSnapshotTemplatesExecutor().Client(this).Execute<ListSnapshotTemplatesResponse, ListSnapshotTemplatesResult, ListSnapshotTemplatesRequest>(request);
        }
#else
        /// <summary>
        ///  查询截图模板列表。
        /// 允许通过条件过滤查询，支持的过滤字段如下：
        ///   - templateType[eq] 按模板类型精确查询
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListSnapshotTemplatesResponse> ListSnapshotTemplates(ListSnapshotTemplatesRequest request) {
            return await new ListSnapshotTemplatesExecutor().Client(this).Execute<ListSnapshotTemplatesResponse, ListSnapshotTemplatesResult, ListSnapshotTemplatesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建视频剪辑工程
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateVeditProjectResponse CreateVeditProject(CreateVeditProjectRequest request) {
            return  new CreateVeditProjectExecutor().Client(this).Execute<CreateVeditProjectResponse, CreateVeditProjectResult, CreateVeditProjectRequest>(request);
        }
#else
        /// <summary>
        ///  创建视频剪辑工程
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateVeditProjectResponse> CreateVeditProject(CreateVeditProjectRequest request) {
            return await new CreateVeditProjectExecutor().Client(this).Execute<CreateVeditProjectResponse, CreateVeditProjectResult, CreateVeditProjectRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建视频剪辑作业
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateVeditJobResponse CreateVeditJob(CreateVeditJobRequest request) {
            return  new CreateVeditJobExecutor().Client(this).Execute<CreateVeditJobResponse, CreateVeditJobResult, CreateVeditJobRequest>(request);
        }
#else
        /// <summary>
        ///  创建视频剪辑作业
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateVeditJobResponse> CreateVeditJob(CreateVeditJobRequest request) {
            return await new CreateVeditJobExecutor().Client(this).Execute<CreateVeditJobResponse, CreateVeditJobResult, CreateVeditJobRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询视频剪辑工程详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetVeditProjectResponse GetVeditProject(GetVeditProjectRequest request) {
            return  new GetVeditProjectExecutor().Client(this).Execute<GetVeditProjectResponse, GetVeditProjectResult, GetVeditProjectRequest>(request);
        }
#else
        /// <summary>
        ///  查询视频剪辑工程详情
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetVeditProjectResponse> GetVeditProject(GetVeditProjectRequest request) {
            return await new GetVeditProjectExecutor().Client(this).Execute<GetVeditProjectResponse, GetVeditProjectResult, GetVeditProjectRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询水印
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetWatermarkResponse GetWatermark(GetWatermarkRequest request) {
            return  new GetWatermarkExecutor().Client(this).Execute<GetWatermarkResponse, GetWatermarkResult, GetWatermarkRequest>(request);
        }
#else
        /// <summary>
        ///  查询水印
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetWatermarkResponse> GetWatermark(GetWatermarkRequest request) {
            return await new GetWatermarkExecutor().Client(this).Execute<GetWatermarkResponse, GetWatermarkResult, GetWatermarkRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除转码模板组中的模板。
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteGroupedTranscodeTemplatesResponse DeleteGroupedTranscodeTemplates(DeleteGroupedTranscodeTemplatesRequest request) {
            return  new DeleteGroupedTranscodeTemplatesExecutor().Client(this).Execute<DeleteGroupedTranscodeTemplatesResponse, DeleteGroupedTranscodeTemplatesResult, DeleteGroupedTranscodeTemplatesRequest>(request);
        }
#else
        /// <summary>
        ///  删除转码模板组中的模板。
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteGroupedTranscodeTemplatesResponse> DeleteGroupedTranscodeTemplates(DeleteGroupedTranscodeTemplatesRequest request) {
            return await new DeleteGroupedTranscodeTemplatesExecutor().Client(this).Execute<DeleteGroupedTranscodeTemplatesResponse, DeleteGroupedTranscodeTemplatesResult, DeleteGroupedTranscodeTemplatesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除视频转码流
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteVideoStreamsResponse DeleteVideoStreams(DeleteVideoStreamsRequest request) {
            return  new DeleteVideoStreamsExecutor().Client(this).Execute<DeleteVideoStreamsResponse, DeleteVideoStreamsResult, DeleteVideoStreamsRequest>(request);
        }
#else
        /// <summary>
        ///  删除视频转码流
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteVideoStreamsResponse> DeleteVideoStreams(DeleteVideoStreamsRequest request) {
            return await new DeleteVideoStreamsExecutor().Client(this).Execute<DeleteVideoStreamsResponse, DeleteVideoStreamsResult, DeleteVideoStreamsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  批量提交转码作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public BatchSubmitTranscodeJobsResponse BatchSubmitTranscodeJobs(BatchSubmitTranscodeJobsRequest request) {
            return  new BatchSubmitTranscodeJobsExecutor().Client(this).Execute<BatchSubmitTranscodeJobsResponse, BatchSubmitTranscodeJobsResult, BatchSubmitTranscodeJobsRequest>(request);
        }
#else
        /// <summary>
        ///  批量提交转码作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<BatchSubmitTranscodeJobsResponse> BatchSubmitTranscodeJobs(BatchSubmitTranscodeJobsRequest request) {
            return await new BatchSubmitTranscodeJobsExecutor().Client(this).Execute<BatchSubmitTranscodeJobsResponse, BatchSubmitTranscodeJobsResult, BatchSubmitTranscodeJobsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  设置CDN域名IP黑名单规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SetIPRuleResponse SetIPRule(SetIPRuleRequest request) {
            return  new SetIPRuleExecutor().Client(this).Execute<SetIPRuleResponse, SetIPRuleResult, SetIPRuleRequest>(request);
        }
#else
        /// <summary>
        ///  设置CDN域名IP黑名单规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SetIPRuleResponse> SetIPRule(SetIPRuleRequest request) {
            return await new SetIPRuleExecutor().Client(this).Execute<SetIPRuleResponse, SetIPRuleResult, SetIPRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除转码模板组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteTranscodeTemplateGroupResponse DeleteTranscodeTemplateGroup(DeleteTranscodeTemplateGroupRequest request) {
            return  new DeleteTranscodeTemplateGroupExecutor().Client(this).Execute<DeleteTranscodeTemplateGroupResponse, DeleteTranscodeTemplateGroupResult, DeleteTranscodeTemplateGroupRequest>(request);
        }
#else
        /// <summary>
        ///  删除转码模板组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteTranscodeTemplateGroupResponse> DeleteTranscodeTemplateGroup(DeleteTranscodeTemplateGroupRequest request) {
            return await new DeleteTranscodeTemplateGroupExecutor().Client(this).Execute<DeleteTranscodeTemplateGroupResponse, DeleteTranscodeTemplateGroupResult, DeleteTranscodeTemplateGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改视频信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateVideoResponse UpdateVideo(UpdateVideoRequest request) {
            return  new UpdateVideoExecutor().Client(this).Execute<UpdateVideoResponse, UpdateVideoResult, UpdateVideoRequest>(request);
        }
#else
        /// <summary>
        ///  修改视频信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateVideoResponse> UpdateVideo(UpdateVideoRequest request) {
            return await new UpdateVideoExecutor().Client(this).Execute<UpdateVideoResponse, UpdateVideoResult, UpdateVideoRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  设为默认域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SetDefaultDomainResponse SetDefaultDomain(SetDefaultDomainRequest request) {
            return  new SetDefaultDomainExecutor().Client(this).Execute<SetDefaultDomainResponse, SetDefaultDomainResult, SetDefaultDomainRequest>(request);
        }
#else
        /// <summary>
        ///  设为默认域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SetDefaultDomainResponse> SetDefaultDomain(SetDefaultDomainRequest request) {
            return await new SetDefaultDomainExecutor().Client(this).Execute<SetDefaultDomainResponse, SetDefaultDomainResult, SetDefaultDomainRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询转码模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetTranscodeTemplateResponse GetTranscodeTemplate(GetTranscodeTemplateRequest request) {
            return  new GetTranscodeTemplateExecutor().Client(this).Execute<GetTranscodeTemplateResponse, GetTranscodeTemplateResult, GetTranscodeTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  查询转码模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetTranscodeTemplateResponse> GetTranscodeTemplate(GetTranscodeTemplateRequest request) {
            return await new GetTranscodeTemplateExecutor().Client(this).Execute<GetTranscodeTemplateResponse, GetTranscodeTemplateResult, GetTranscodeTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除分类
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteCategoryResponse DeleteCategory(DeleteCategoryRequest request) {
            return  new DeleteCategoryExecutor().Client(this).Execute<DeleteCategoryResponse, DeleteCategoryResult, DeleteCategoryRequest>(request);
        }
#else
        /// <summary>
        ///  删除分类
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteCategoryResponse> DeleteCategory(DeleteCategoryRequest request) {
            return await new DeleteCategoryExecutor().Client(this).Execute<DeleteCategoryResponse, DeleteCategoryResult, DeleteCategoryRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取视频播放信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetVideoPlayInfoResponse GetVideoPlayInfo(GetVideoPlayInfoRequest request) {
            return  new GetVideoPlayInfoExecutor().Client(this).Execute<GetVideoPlayInfoResponse, GetVideoPlayInfoResult, GetVideoPlayInfoRequest>(request);
        }
#else
        /// <summary>
        ///  获取视频播放信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetVideoPlayInfoResponse> GetVideoPlayInfo(GetVideoPlayInfoRequest request) {
            return await new GetVideoPlayInfoExecutor().Client(this).Execute<GetVideoPlayInfoResponse, GetVideoPlayInfoResult, GetVideoPlayInfoRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除域名访问头参数
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteHeaderResponse DeleteHeader(DeleteHeaderRequest request) {
            return  new DeleteHeaderExecutor().Client(this).Execute<DeleteHeaderResponse, DeleteHeaderResult, DeleteHeaderRequest>(request);
        }
#else
        /// <summary>
        ///  删除域名访问头参数
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteHeaderResponse> DeleteHeader(DeleteHeaderRequest request) {
            return await new DeleteHeaderExecutor().Client(this).Execute<DeleteHeaderResponse, DeleteHeaderResult, DeleteHeaderRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改转码模板组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateTranscodeTemplateGroupResponse UpdateTranscodeTemplateGroup(UpdateTranscodeTemplateGroupRequest request) {
            return  new UpdateTranscodeTemplateGroupExecutor().Client(this).Execute<UpdateTranscodeTemplateGroupResponse, UpdateTranscodeTemplateGroupResult, UpdateTranscodeTemplateGroupRequest>(request);
        }
#else
        /// <summary>
        ///  修改转码模板组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateTranscodeTemplateGroupResponse> UpdateTranscodeTemplateGroup(UpdateTranscodeTemplateGroupRequest request) {
            return await new UpdateTranscodeTemplateGroupExecutor().Client(this).Execute<UpdateTranscodeTemplateGroupResponse, UpdateTranscodeTemplateGroupResult, UpdateTranscodeTemplateGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改分类
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateCategoryResponse UpdateCategory(UpdateCategoryRequest request) {
            return  new UpdateCategoryExecutor().Client(this).Execute<UpdateCategoryResponse, UpdateCategoryResult, UpdateCategoryRequest>(request);
        }
#else
        /// <summary>
        ///  修改分类
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateCategoryResponse> UpdateCategory(UpdateCategoryRequest request) {
            return await new UpdateCategoryExecutor().Client(this).Execute<UpdateCategoryResponse, UpdateCategoryResult, UpdateCategoryRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除截图模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteSnapshotTemplateResponse DeleteSnapshotTemplate(DeleteSnapshotTemplateRequest request) {
            return  new DeleteSnapshotTemplateExecutor().Client(this).Execute<DeleteSnapshotTemplateResponse, DeleteSnapshotTemplateResult, DeleteSnapshotTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  删除截图模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteSnapshotTemplateResponse> DeleteSnapshotTemplate(DeleteSnapshotTemplateRequest request) {
            return await new DeleteSnapshotTemplateExecutor().Client(this).Execute<DeleteSnapshotTemplateResponse, DeleteSnapshotTemplateResult, DeleteSnapshotTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  设置CDN域名Referer防盗链规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SetRefererRuleResponse SetRefererRule(SetRefererRuleRequest request) {
            return  new SetRefererRuleExecutor().Client(this).Execute<SetRefererRuleResponse, SetRefererRuleResult, SetRefererRuleRequest>(request);
        }
#else
        /// <summary>
        ///  设置CDN域名Referer防盗链规则
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SetRefererRuleResponse> SetRefererRule(SetRefererRuleRequest request) {
            return await new SetRefererRuleExecutor().Client(this).Execute<SetRefererRuleResponse, SetRefererRuleResult, SetRefererRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建质检模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateQualityDetectionTemplateResponse CreateQualityDetectionTemplate(CreateQualityDetectionTemplateRequest request) {
            return  new CreateQualityDetectionTemplateExecutor().Client(this).Execute<CreateQualityDetectionTemplateResponse, CreateQualityDetectionTemplateResult, CreateQualityDetectionTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  创建质检模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateQualityDetectionTemplateResponse> CreateQualityDetectionTemplate(CreateQualityDetectionTemplateRequest request) {
            return await new CreateQualityDetectionTemplateExecutor().Client(this).Execute<CreateQualityDetectionTemplateResponse, CreateQualityDetectionTemplateResult, CreateQualityDetectionTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询CDN域名Referer防盗链规则配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetRefererRuleResponse GetRefererRule(GetRefererRuleRequest request) {
            return  new GetRefererRuleExecutor().Client(this).Execute<GetRefererRuleResponse, GetRefererRuleResult, GetRefererRuleRequest>(request);
        }
#else
        /// <summary>
        ///  查询CDN域名Referer防盗链规则配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetRefererRuleResponse> GetRefererRule(GetRefererRuleRequest request) {
            return await new GetRefererRuleExecutor().Client(this).Execute<GetRefererRuleResponse, GetRefererRuleResult, GetRefererRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询质检模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetQualityDetectionTemplateResponse GetQualityDetectionTemplate(GetQualityDetectionTemplateRequest request) {
            return  new GetQualityDetectionTemplateExecutor().Client(this).Execute<GetQualityDetectionTemplateResponse, GetQualityDetectionTemplateResult, GetQualityDetectionTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  查询质检模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetQualityDetectionTemplateResponse> GetQualityDetectionTemplate(GetQualityDetectionTemplateRequest request) {
            return await new GetQualityDetectionTemplateExecutor().Client(this).Execute<GetQualityDetectionTemplateResponse, GetQualityDetectionTemplateResult, GetQualityDetectionTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除域名。执行该操作，需确保域名已被停用。
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteDomainResponse DeleteDomain(DeleteDomainRequest request) {
            return  new DeleteDomainExecutor().Client(this).Execute<DeleteDomainResponse, DeleteDomainResult, DeleteDomainRequest>(request);
        }
#else
        /// <summary>
        ///  删除域名。执行该操作，需确保域名已被停用。
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteDomainResponse> DeleteDomain(DeleteDomainRequest request) {
            return await new DeleteDomainExecutor().Client(this).Execute<DeleteDomainResponse, DeleteDomainResult, DeleteDomainRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建直播转点播任务
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateLiveToVodTaskResponse CreateLiveToVodTask(CreateLiveToVodTaskRequest request) {
            return  new CreateLiveToVodTaskExecutor().Client(this).Execute<CreateLiveToVodTaskResponse, CreateLiveToVodTaskResult, CreateLiveToVodTaskRequest>(request);
        }
#else
        /// <summary>
        ///  创建直播转点播任务
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateLiveToVodTaskResponse> CreateLiveToVodTask(CreateLiveToVodTaskRequest request) {
            return await new CreateLiveToVodTaskExecutor().Client(this).Execute<CreateLiveToVodTaskResponse, CreateLiveToVodTaskResult, CreateLiveToVodTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加分类
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateCategoryResponse CreateCategory(CreateCategoryRequest request) {
            return  new CreateCategoryExecutor().Client(this).Execute<CreateCategoryResponse, CreateCategoryResult, CreateCategoryRequest>(request);
        }
#else
        /// <summary>
        ///  添加分类
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateCategoryResponse> CreateCategory(CreateCategoryRequest request) {
            return await new CreateCategoryExecutor().Client(this).Execute<CreateCategoryResponse, CreateCategoryResult, CreateCategoryRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  视频审核
        /// 视频在上传中或者转码中不允许更改视频审核状态，即视频只有在正常或屏蔽状态下才可以调用此接口设置审核状态
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public VideoAuditResponse VideoAudit(VideoAuditRequest request) {
            return  new VideoAuditExecutor().Client(this).Execute<VideoAuditResponse, VideoAuditResult, VideoAuditRequest>(request);
        }
#else
        /// <summary>
        ///  视频审核
        /// 视频在上传中或者转码中不允许更改视频审核状态，即视频只有在正常或屏蔽状态下才可以调用此接口设置审核状态
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<VideoAuditResponse> VideoAudit(VideoAuditRequest request) {
            return await new VideoAuditExecutor().Client(this).Execute<VideoAuditResponse, VideoAuditResult, VideoAuditRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询水印列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListWatermarksResponse ListWatermarks(ListWatermarksRequest request) {
            return  new ListWatermarksExecutor().Client(this).Execute<ListWatermarksResponse, ListWatermarksResult, ListWatermarksRequest>(request);
        }
#else
        /// <summary>
        ///  查询水印列表
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListWatermarksResponse> ListWatermarks(ListWatermarksRequest request) {
            return await new ListWatermarksExecutor().Client(this).Execute<ListWatermarksResponse, ListWatermarksResult, ListWatermarksRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询CDN域名SSL配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetHttpSslResponse GetHttpSsl(GetHttpSslRequest request) {
            return  new GetHttpSslExecutor().Client(this).Execute<GetHttpSslResponse, GetHttpSslResult, GetHttpSslRequest>(request);
        }
#else
        /// <summary>
        ///  查询CDN域名SSL配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetHttpSslResponse> GetHttpSsl(GetHttpSslRequest request) {
            return await new GetHttpSslExecutor().Client(this).Execute<GetHttpSslResponse, GetHttpSslResult, GetHttpSslRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除视频剪辑工程
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteVeditProjectResponse DeleteVeditProject(DeleteVeditProjectRequest request) {
            return  new DeleteVeditProjectExecutor().Client(this).Execute<DeleteVeditProjectResponse, DeleteVeditProjectResult, DeleteVeditProjectRequest>(request);
        }
#else
        /// <summary>
        ///  删除视频剪辑工程
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteVeditProjectResponse> DeleteVeditProject(DeleteVeditProjectRequest request) {
            return await new DeleteVeditProjectExecutor().Client(this).Execute<DeleteVeditProjectResponse, DeleteVeditProjectResult, DeleteVeditProjectRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  获取视频源文件信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetVideoSourceInfoResponse GetVideoSourceInfo(GetVideoSourceInfoRequest request) {
            return  new GetVideoSourceInfoExecutor().Client(this).Execute<GetVideoSourceInfoResponse, GetVideoSourceInfoResult, GetVideoSourceInfoRequest>(request);
        }
#else
        /// <summary>
        ///  获取视频源文件信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetVideoSourceInfoResponse> GetVideoSourceInfo(GetVideoSourceInfoRequest request) {
            return await new GetVideoSourceInfoExecutor().Client(this).Execute<GetVideoSourceInfoResponse, GetVideoSourceInfoResult, GetVideoSourceInfoRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  设置域名访问头参数
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SetHeaderResponse SetHeader(SetHeaderRequest request) {
            return  new SetHeaderExecutor().Client(this).Execute<SetHeaderResponse, SetHeaderResult, SetHeaderRequest>(request);
        }
#else
        /// <summary>
        ///  设置域名访问头参数
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SetHeaderResponse> SetHeader(SetHeaderRequest request) {
            return await new SetHeaderExecutor().Client(this).Execute<SetHeaderResponse, SetHeaderResult, SetHeaderRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  刷新视频上传地址和凭证
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public RefreshVideoUploadTaskResponse RefreshVideoUploadTask(RefreshVideoUploadTaskRequest request) {
            return  new RefreshVideoUploadTaskExecutor().Client(this).Execute<RefreshVideoUploadTaskResponse, RefreshVideoUploadTaskResult, RefreshVideoUploadTaskRequest>(request);
        }
#else
        /// <summary>
        ///  刷新视频上传地址和凭证
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<RefreshVideoUploadTaskResponse> RefreshVideoUploadTask(RefreshVideoUploadTaskRequest request) {
            return await new RefreshVideoUploadTaskExecutor().Client(this).Execute<RefreshVideoUploadTaskResponse, RefreshVideoUploadTaskResult, RefreshVideoUploadTaskRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询转码模板组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetTranscodeTemplateGroupResponse GetTranscodeTemplateGroup(GetTranscodeTemplateGroupRequest request) {
            return  new GetTranscodeTemplateGroupExecutor().Client(this).Execute<GetTranscodeTemplateGroupResponse, GetTranscodeTemplateGroupResult, GetTranscodeTemplateGroupRequest>(request);
        }
#else
        /// <summary>
        ///  查询转码模板组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetTranscodeTemplateGroupResponse> GetTranscodeTemplateGroup(GetTranscodeTemplateGroupRequest request) {
            return await new GetTranscodeTemplateGroupExecutor().Client(this).Execute<GetTranscodeTemplateGroupResponse, GetTranscodeTemplateGroupResult, GetTranscodeTemplateGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询视频剪辑工程列表。
        /// 允许通过条件过滤查询，支持的过滤字段如下：
        ///   - projectId[eq] 按照工程ID精确查询
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListVeditProjectsResponse ListVeditProjects(ListVeditProjectsRequest request) {
            return  new ListVeditProjectsExecutor().Client(this).Execute<ListVeditProjectsResponse, ListVeditProjectsResult, ListVeditProjectsRequest>(request);
        }
#else
        /// <summary>
        ///  查询视频剪辑工程列表。
        /// 允许通过条件过滤查询，支持的过滤字段如下：
        ///   - projectId[eq] 按照工程ID精确查询
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListVeditProjectsResponse> ListVeditProjects(ListVeditProjectsRequest request) {
            return await new ListVeditProjectsExecutor().Client(this).Execute<ListVeditProjectsResponse, ListVeditProjectsResult, ListVeditProjectsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询单个视频信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetVideoResponse GetVideo(GetVideoRequest request) {
            return  new GetVideoExecutor().Client(this).Execute<GetVideoResponse, GetVideoResult, GetVideoRequest>(request);
        }
#else
        /// <summary>
        ///  查询单个视频信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetVideoResponse> GetVideo(GetVideoRequest request) {
            return await new GetVideoExecutor().Client(this).Execute<GetVideoResponse, GetVideoResult, GetVideoRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询视频列表信息。
        /// 允许通过条件过滤查询，支持的过滤字段如下：
        ///   - status[eq] 按视频状态精确查询
        ///   - categoryId[eq] 按分类ID精确查询
        ///   - videoId[eq] 按视频ID精确查询
        ///   - name[eq] 按视频名称精确查询
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListVideosResponse ListVideos(ListVideosRequest request) {
            return  new ListVideosExecutor().Client(this).Execute<ListVideosResponse, ListVideosResult, ListVideosRequest>(request);
        }
#else
        /// <summary>
        ///  查询视频列表信息。
        /// 允许通过条件过滤查询，支持的过滤字段如下：
        ///   - status[eq] 按视频状态精确查询
        ///   - categoryId[eq] 按分类ID精确查询
        ///   - videoId[eq] 按视频ID精确查询
        ///   - name[eq] 按视频名称精确查询
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListVideosResponse> ListVideos(ListVideosRequest request) {
            return await new ListVideosExecutor().Client(this).Execute<ListVideosResponse, ListVideosResult, ListVideosRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询截图模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetSnapshotTemplateResponse GetSnapshotTemplate(GetSnapshotTemplateRequest request) {
            return  new GetSnapshotTemplateExecutor().Client(this).Execute<GetSnapshotTemplateResponse, GetSnapshotTemplateResult, GetSnapshotTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  查询截图模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetSnapshotTemplateResponse> GetSnapshotTemplate(GetSnapshotTemplateRequest request) {
            return await new GetSnapshotTemplateExecutor().Client(this).Execute<GetSnapshotTemplateResponse, GetSnapshotTemplateResult, GetSnapshotTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  添加水印
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateWatermarkResponse CreateWatermark(CreateWatermarkRequest request) {
            return  new CreateWatermarkExecutor().Client(this).Execute<CreateWatermarkResponse, CreateWatermarkResult, CreateWatermarkRequest>(request);
        }
#else
        /// <summary>
        ///  添加水印
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateWatermarkResponse> CreateWatermark(CreateWatermarkRequest request) {
            return await new CreateWatermarkExecutor().Client(this).Execute<CreateWatermarkResponse, CreateWatermarkResult, CreateWatermarkRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除视频，调用该接口会同时删除与指定视频相关的所有信息，包括转码任务信息、转码流数据等，同时清除云存储中相关文件资源。
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteVideoResponse DeleteVideo(DeleteVideoRequest request) {
            return  new DeleteVideoExecutor().Client(this).Execute<DeleteVideoResponse, DeleteVideoResult, DeleteVideoRequest>(request);
        }
#else
        /// <summary>
        ///  删除视频，调用该接口会同时删除与指定视频相关的所有信息，包括转码任务信息、转码流数据等，同时清除云存储中相关文件资源。
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteVideoResponse> DeleteVideo(DeleteVideoRequest request) {
            return await new DeleteVideoExecutor().Client(this).Execute<DeleteVideoResponse, DeleteVideoResult, DeleteVideoRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改截图模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateSnapshotTemplateResponse UpdateSnapshotTemplate(UpdateSnapshotTemplateRequest request) {
            return  new UpdateSnapshotTemplateExecutor().Client(this).Execute<UpdateSnapshotTemplateResponse, UpdateSnapshotTemplateResult, UpdateSnapshotTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  修改截图模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateSnapshotTemplateResponse> UpdateSnapshotTemplate(UpdateSnapshotTemplateRequest request) {
            return await new UpdateSnapshotTemplateExecutor().Client(this).Execute<UpdateSnapshotTemplateResponse, UpdateSnapshotTemplateResult, UpdateSnapshotTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询转码任务摘要
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetTranscodeTaskSummariesResponse GetTranscodeTaskSummaries(GetTranscodeTaskSummariesRequest request) {
            return  new GetTranscodeTaskSummariesExecutor().Client(this).Execute<GetTranscodeTaskSummariesResponse, GetTranscodeTaskSummariesResult, GetTranscodeTaskSummariesRequest>(request);
        }
#else
        /// <summary>
        ///  查询转码任务摘要
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetTranscodeTaskSummariesResponse> GetTranscodeTaskSummaries(GetTranscodeTaskSummariesRequest request) {
            return await new GetTranscodeTaskSummariesExecutor().Client(this).Execute<GetTranscodeTaskSummariesResponse, GetTranscodeTaskSummariesResult, GetTranscodeTaskSummariesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  提交质检作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SubmitQualityDetectionJobResponse SubmitQualityDetectionJob(SubmitQualityDetectionJobRequest request) {
            return  new SubmitQualityDetectionJobExecutor().Client(this).Execute<SubmitQualityDetectionJobResponse, SubmitQualityDetectionJobResult, SubmitQualityDetectionJobRequest>(request);
        }
#else
        /// <summary>
        ///  提交质检作业
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SubmitQualityDetectionJobResponse> SubmitQualityDetectionJob(SubmitQualityDetectionJobRequest request) {
            return await new SubmitQualityDetectionJobExecutor().Client(this).Execute<SubmitQualityDetectionJobResponse, SubmitQualityDetectionJobResult, SubmitQualityDetectionJobRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建截图模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateSnapshotTemplateResponse CreateSnapshotTemplate(CreateSnapshotTemplateRequest request) {
            return  new CreateSnapshotTemplateExecutor().Client(this).Execute<CreateSnapshotTemplateResponse, CreateSnapshotTemplateResult, CreateSnapshotTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  创建截图模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateSnapshotTemplateResponse> CreateSnapshotTemplate(CreateSnapshotTemplateRequest request) {
            return await new CreateSnapshotTemplateExecutor().Client(this).Execute<CreateSnapshotTemplateResponse, CreateSnapshotTemplateResult, CreateSnapshotTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建转码模板组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateTranscodeTemplateGroupResponse CreateTranscodeTemplateGroup(CreateTranscodeTemplateGroupRequest request) {
            return  new CreateTranscodeTemplateGroupExecutor().Client(this).Execute<CreateTranscodeTemplateGroupResponse, CreateTranscodeTemplateGroupResult, CreateTranscodeTemplateGroupRequest>(request);
        }
#else
        /// <summary>
        ///  创建转码模板组
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateTranscodeTemplateGroupResponse> CreateTranscodeTemplateGroup(CreateTranscodeTemplateGroupRequest request) {
            return await new CreateTranscodeTemplateGroupExecutor().Client(this).Execute<CreateTranscodeTemplateGroupResponse, CreateTranscodeTemplateGroupResult, CreateTranscodeTemplateGroupRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询CDN域名IP黑名单规则配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public GetIPRuleResponse GetIPRule(GetIPRuleRequest request) {
            return  new GetIPRuleExecutor().Client(this).Execute<GetIPRuleResponse, GetIPRuleResult, GetIPRuleRequest>(request);
        }
#else
        /// <summary>
        ///  查询CDN域名IP黑名单规则配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<GetIPRuleResponse> GetIPRule(GetIPRuleRequest request) {
            return await new GetIPRuleExecutor().Client(this).Execute<GetIPRuleResponse, GetIPRuleResult, GetIPRuleRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  启用域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public EnableDomainResponse EnableDomain(EnableDomainRequest request) {
            return  new EnableDomainExecutor().Client(this).Execute<EnableDomainResponse, EnableDomainResult, EnableDomainRequest>(request);
        }
#else
        /// <summary>
        ///  启用域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<EnableDomainResponse> EnableDomain(EnableDomainRequest request) {
            return await new EnableDomainExecutor().Client(this).Execute<EnableDomainResponse, EnableDomainResult, EnableDomainRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  设置CDN域名SSL配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public SetHttpSslResponse SetHttpSsl(SetHttpSslRequest request) {
            return  new SetHttpSslExecutor().Client(this).Execute<SetHttpSslResponse, SetHttpSslResult, SetHttpSslRequest>(request);
        }
#else
        /// <summary>
        ///  设置CDN域名SSL配置
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<SetHttpSslResponse> SetHttpSsl(SetHttpSslRequest request) {
            return await new SetHttpSslExecutor().Client(this).Execute<SetHttpSslResponse, SetHttpSslResult, SetHttpSslRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  创建转码模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public CreateTranscodeTemplateResponse CreateTranscodeTemplate(CreateTranscodeTemplateRequest request) {
            return  new CreateTranscodeTemplateExecutor().Client(this).Execute<CreateTranscodeTemplateResponse, CreateTranscodeTemplateResult, CreateTranscodeTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  创建转码模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<CreateTranscodeTemplateResponse> CreateTranscodeTemplate(CreateTranscodeTemplateRequest request) {
            return await new CreateTranscodeTemplateExecutor().Client(this).Execute<CreateTranscodeTemplateResponse, CreateTranscodeTemplateResult, CreateTranscodeTemplateRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  修改视频剪辑工程信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public UpdateVeditProjectResponse UpdateVeditProject(UpdateVeditProjectRequest request) {
            return  new UpdateVeditProjectExecutor().Client(this).Execute<UpdateVeditProjectResponse, UpdateVeditProjectResult, UpdateVeditProjectRequest>(request);
        }
#else
        /// <summary>
        ///  修改视频剪辑工程信息
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<UpdateVeditProjectResponse> UpdateVeditProject(UpdateVeditProjectRequest request) {
            return await new UpdateVeditProjectExecutor().Client(this).Execute<UpdateVeditProjectResponse, UpdateVeditProjectResult, UpdateVeditProjectRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询转码模板组列表。
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListTranscodeTemplateGroupsResponse ListTranscodeTemplateGroups(ListTranscodeTemplateGroupsRequest request) {
            return  new ListTranscodeTemplateGroupsExecutor().Client(this).Execute<ListTranscodeTemplateGroupsResponse, ListTranscodeTemplateGroupsResult, ListTranscodeTemplateGroupsRequest>(request);
        }
#else
        /// <summary>
        ///  查询转码模板组列表。
        /// 
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListTranscodeTemplateGroupsResponse> ListTranscodeTemplateGroups(ListTranscodeTemplateGroupsRequest request) {
            return await new ListTranscodeTemplateGroupsExecutor().Client(this).Execute<ListTranscodeTemplateGroupsResponse, ListTranscodeTemplateGroupsResult, ListTranscodeTemplateGroupsRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  查询分类列表。按照分页方式，返回分类列表信息。
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public ListCategoriesResponse ListCategories(ListCategoriesRequest request) {
            return  new ListCategoriesExecutor().Client(this).Execute<ListCategoriesResponse, ListCategoriesResult, ListCategoriesRequest>(request);
        }
#else
        /// <summary>
        ///  查询分类列表。按照分页方式，返回分类列表信息。
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<ListCategoriesResponse> ListCategories(ListCategoriesRequest request) {
            return await new ListCategoriesExecutor().Client(this).Execute<ListCategoriesResponse, ListCategoriesResult, ListCategoriesRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  批量删除视频，调用该接口会同时删除与指定视频相关的所有信息，包括转码任务信息、转码流数据等，同时清除云存储中相关文件资源。
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public BatchDeleteVideosResponse BatchDeleteVideos(BatchDeleteVideosRequest request) {
            return  new BatchDeleteVideosExecutor().Client(this).Execute<BatchDeleteVideosResponse, BatchDeleteVideosResult, BatchDeleteVideosRequest>(request);
        }
#else
        /// <summary>
        ///  批量删除视频，调用该接口会同时删除与指定视频相关的所有信息，包括转码任务信息、转码流数据等，同时清除云存储中相关文件资源。
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<BatchDeleteVideosResponse> BatchDeleteVideos(BatchDeleteVideosRequest request) {
            return await new BatchDeleteVideosExecutor().Client(this).Execute<BatchDeleteVideosResponse, BatchDeleteVideosResult, BatchDeleteVideosRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  停用域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DisableDomainResponse DisableDomain(DisableDomainRequest request) {
            return  new DisableDomainExecutor().Client(this).Execute<DisableDomainResponse, DisableDomainResult, DisableDomainRequest>(request);
        }
#else
        /// <summary>
        ///  停用域名
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DisableDomainResponse> DisableDomain(DisableDomainRequest request) {
            return await new DisableDomainExecutor().Client(this).Execute<DisableDomainResponse, DisableDomainResult, DisableDomainRequest>(request).ConfigureAwait(false);
        }
#endif
#if NET40||NET35
        /// <summary>
        ///  删除质检模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public DeleteQualityDetectionTemplateResponse DeleteQualityDetectionTemplate(DeleteQualityDetectionTemplateRequest request) {
            return  new DeleteQualityDetectionTemplateExecutor().Client(this).Execute<DeleteQualityDetectionTemplateResponse, DeleteQualityDetectionTemplateResult, DeleteQualityDetectionTemplateRequest>(request);
        }
#else
        /// <summary>
        ///  删除质检模板
        /// </summary>
        /// <param name="request">请求参数信息</param>
        /// <returns>请求结果信息</returns>
        public async Task<DeleteQualityDetectionTemplateResponse> DeleteQualityDetectionTemplate(DeleteQualityDetectionTemplateRequest request) {
            return await new DeleteQualityDetectionTemplateExecutor().Client(this).Execute<DeleteQualityDetectionTemplateResponse, DeleteQualityDetectionTemplateResult, DeleteQualityDetectionTemplateRequest>(request).ConfigureAwait(false);
        }
#endif

            /// <summary>
            ///  默认VodClient 构造器 接口
            ///</summary>
            public interface Builder
            {

                /// <summary>
                /// 设置认证信息参数
                /// </summary>
                /// <param name="provider">认证信息提供对象</param>
                /// <returns>vodClient 构造器</returns>
                Builder CredentialsProvider(CredentialsProvider provider);

                /// <summary>
                /// 设置请求环境参数
                /// </summary>
                /// <param name="environment">环境参数信息</param>
                /// <returns>vodClient 构造器</returns>
                Builder Environment(Core.Client.SDKEnvironment environment);

                /// <summary>
                /// http 请求配置信息
                /// </summary>
                /// <param name="config">http 请求配置信息</param>
                /// <returns>vodClient 构造器</returns>
                Builder HttpRequestConfig(HttpRequestConfig config);

                /// <summary>
                ///  构造VodClient 对象
                ///</summary>
                VodClient Build();
            }

            /// <summary>
            ///  默认VodClient 构造器
            ///</summary>
            public class DefaultBuilder : Builder
            {
                /// <summary>
                ///  VodClient service client
                /// </summary>
                private  VodClient vodClient;

                /// <summary>
                ///  默认VodClient 构造器构造对象
                ///</summary>
                public DefaultBuilder()
                {
                    vodClient = new VodClient();
                }

                /// <summary>
                ///  构造VodClient 对象
                ///</summary>
                public VodClient Build()
                {
                    if (vodClient.CredentialsProvider == null)
                    {
                        //if credentialsProvider not set, try load jdcloud global default  credentials provider
                        vodClient.credentialsProvider = JdCloud.DefaultInstance.GetCredentialsProvider();
                        if (vodClient.credentialsProvider == null)
                        {
                            throw new ArgumentNullException("VodClient build error: jdcloud credentials provider not set");
                        }
                    }
                    if (vodClient.HttpRequestConfig == null)
                    {
                        vodClient.httpRequestConfig = JdCloud.DefaultInstance.GetHttpRequestConfig();
                        if (vodClient.httpRequestConfig == null)
                        {
                        throw new ArgumentNullException("VodClient build error: http request config not set");
                        }
                    }
                    return vodClient;
                }

                /// <summary>
                /// 设置认证信息参数
                /// </summary>
                /// <param name="provider">认证信息提供对象</param>
                /// <returns>vodClient 构造器</returns>
                public Builder CredentialsProvider(CredentialsProvider provider)
                {
                    vodClient.credentialsProvider = provider;
                    return this;
                }

                /// <summary>
                /// 设置请求环境参数
                /// </summary>
                /// <param name="environment">环境参数信息</param>
                /// <returns>vodClient 构造器</returns>
                public Builder Environment(SDKEnvironment environment)
                {
                    vodClient.environment = environment;
                    return this;
                }

                /// <summary>
                /// http 请求配置信息
                /// </summary>
                /// <param name="config">http 请求配置信息</param>
                /// <returns>vodClient 构造器</returns>
                public Builder HttpRequestConfig(HttpRequestConfig config)
                {
                    vodClient.httpRequestConfig = config;
                    return this;
                }
            }
    }
}
